package com.teradata.olingo.processor.core.filter;

import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAAssociationPath;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAEntityType;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAServiceDocument;
import com.teradata.olingo.processor.core.api.GenericServiceDebugger;
import com.teradata.olingo.processor.core.query.GenericAbstractQuery;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.uri.UriResource;

import javax.persistence.EntityManager;
import javax.persistence.criteria.From;
import java.util.List;

interface GenericFilterComplierAccess {

  GenericAbstractQuery getParent();

  List<UriResource> getUriResourceParts();

  JPAServiceDocument getSd();

  OData getOdata();

  EntityManager getEntityManager();

  JPAEntityType getJpaEntityType();

  GenericOperationConverter getConverter();

  From<?, ?> getRoot();

  GenericServiceDebugger getDebugger();

  JPAAssociationPath getAssoziation();

}
